iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 21
1
自我挑戰組

從0開始,一起學C語言吧!系列 第 21

從0開始,一起學C語言吧!(Day21)

  • 分享至 

  • xImage
  •  

Day21-main()函式的引數

main()函式的引數,定義為外部傳給main()函式的引數,在執行列時,可以在程式後加上引數,當程式需要加受這些引數時,就可以用main()函式的引數來輸入。
範例1:

#include<stdio.h>
#include<stdlib.h>
int main(int argc,char *argv[])
{
	int i;
	printf("argc=%d\n",argc);
	for(i=0;i<argc;i++)
	   printf("%s\n",argv[i]);
	system("pause");
}

印出:
https://ithelp.ithome.com.tw/upload/images/20190922/20119958xgZXaIBTCB.png
解釋:argc在這裡代表引數的總個數,char *argv[]表示以一個字元陣列儲存所有引數

範例2: 根號的計算---找出最接近該數之根號值的整數

#include<stdio.h>
#include<stdlib.h>
int SQRT (int);
int main(void){
	int n;
	scanf("%d",&n);
	printf("%d",SQRT(n));
	system("pause");
	return 0;
}
int SQRT (int n){
	int i;
	if(n<1)return -1;
	for(i=1;i<n;i++)
	   if(i*i>n) 
	break;
	return (i*i-n)< ((i-1)*(i-1)-n)? i:i-1;
}

印出:
https://ithelp.ithome.com.tw/upload/images/20190922/20119958BboS75TrMs.png
解釋:
看到倒數第2行這串程式碼比較複雜,這是用到了三元運算子,判斷i平方較接近n或n-1平方較接近n,如果判斷為真,即i*i-n的值較小,較接近n,則回傳i;否則,則傳回i-1

範例3:排列組合數的計算
從5個物品中取出3個物品有C(5,3)種方式
計算公式:C(n,r)=C(n-1,r)+C(n-1,r-1)

#include<stdio.h>
#include<stdlib.h>
int C(int ,int);
int main(void){
	int n,r;
	printf("計算組合數C,請輸入n,r:");
    scanf("%d %d",&n,&r);
    printf("C(%d,%d)=%d",n,r,C(n,r));
	system("pause");
}
int C(int n,int r){
	if(n<r||r<0)
	   return -1;
	if(n==r||r==0)
	   return 1;
	return C(n-1,r)+C(n-1,r-1);
}

印出:
https://ithelp.ithome.com.tw/upload/images/20190922/20119958w8YjbnmGCU.png
解釋:
第12行取排列組合時,n<r或r<0都是不合法的,此時回傳-1
第14行取相同數0種的方式都只有一個,也就是n==r或r==0時會回傳1

那今天就先到這
謝謝大家今天的閱讀


上一篇
從0開始,一起學C語言吧!(Day20)
下一篇
從0開始,一起學C語言吧!(Day22)
系列文
從0開始,一起學C語言吧!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言